//@version=5
// © HancoLab 2025
strategy("[HancoLab] Gemini가 만든 전략", overlay=true)

// 1. 파라미터 설정
// ----------------------------------------------------
// EMA (추세 필터)
ema_len = input.int(200, "EMA Length", minval=1)
// ATR (변동성 측정)
atr_len = input.int(14, "ATR Length", minval=1)
// ATR 돌파 계수 (K)
k_value = input.float(0.8, "ATR Breakout Multiplier (K)", minval=0.1, step=0.1)
// 이익실현 배수
tp_mult = input.float(3.0, "Take Profit Multiplier (x ATR)", minval=0.1, step=0.1)
// 손절매 배수
sl_mult = input.float(1.5, "Stop Loss Multiplier (x ATR)", minval=0.1, step=0.1)

// 2. 지표 계산
// ----------------------------------------------------
ema_filter = ta.ema(close, ema_len)
atr_value = ta.atr(atr_len)

// 3. 진입 조건 (Long Only Strategy)
// ----------------------------------------------------
// 장기 추세 필터: 현재 종가가 200-EMA 위에 있을 것
trend_up = close > ema_filter

// 변동성 돌파 조건: 
// 직전 종가 + (ATR * K)를 상방 돌파하고, 현재 봉이 양봉(close > open)일 것
// Note: 'close[1]'은 직전 봉의 종가를 의미합니다.
long_breakout_level = close[1] + (atr_value * k_value)
volatility_breakout = close > long_breakout_level and close > open

// 최종 Long 진입 조건
long_condition = trend_up and volatility_breakout

// 4. 진입 주문 실행
// ----------------------------------------------------
if (long_condition)
    strategy.entry("LongEntry", strategy.long, comment="L-Entry")

// 5. 청산 주문 실행 (Dynamic TP/SL based on ATR)
// ----------------------------------------------------
// ATR을 기반으로 이익실현 및 손절매 가격 설정
// strategy.position_avg_price는 현재 포지션의 평균 진입 가격
tp_price = strategy.position_avg_price + (atr_value * tp_mult)
sl_price = strategy.position_avg_price - (atr_value * sl_mult)

// 전략이 포지션을 보유 중일 때만 exit 명령 실행
if (strategy.position_size > 0)
    strategy.exit("LongExit", from_entry="LongEntry", limit=tp_price, stop=sl_price, comment="L-Exit")

// 6. 차트 시각화
// ----------------------------------------------------
plot(ema_filter, color=color.blue, linewidth=2, title="200-EMA")
bgcolor(trend_up ? color.new(color.green, 90) : color.new(color.red, 90), title="Trend Background") 
// 진입 레벨 플롯 (시각적 확인용)
plot(long_breakout_level, color=color.orange, linewidth=1, title="Breakout Level", style=plot.style_linebr)

// 참고: 전략의 최대봉 개수 (max_bars_back)는 TradingView 설정에 따릅니다.
// Futures 거래에 적합하도록 commission과 slippage 설정은 백테스팅 환경에서 조절하세요.